As we don't support Win9x anyway, we can use ProcessIdToSessionId()
authorTor Lillqvist <tml@novell.com>
Wed, 11 Jun 2008 16:05:28 +0000 (16:05 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Wed, 11 Jun 2008 16:05:28 +0000 (16:05 +0000)
2008-06-11  Tor Lillqvist  <tml@novell.com>

* gdk/win32/gdkdisplay-win32.c (gdk_display_get_name): As we don't
support Win9x anyway, we can use ProcessIdToSessionId()
unconditionally.

svn path=/trunk/; revision=20353

ChangeLog
gdk/win32/gdkdisplay-win32.c

index efeb6dbd2f9195457deca1c9338d3f05ad6df8bd..ef735ad34e556c8146ceb45699638a785d0d2611 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-11  Tor Lillqvist  <tml@novell.com>
+
+       * gdk/win32/gdkdisplay-win32.c (gdk_display_get_name): As we don't
+       support Win9x anyway, we can use ProcessIdToSessionId()
+       unconditionally.
+
 2008-06-11  Michael Natterer  <mitch@imendio.com>
 
        * gtk/gtkfilechooserbutton.c: fix local prototype of
index cc0246c655ee61211da2bcb7b5d1a445c143af33..43dcb745754cc648f40b91f95b34b9ac0461c092 100644 (file)
@@ -184,33 +184,6 @@ _gdk_monitor_init (void)
 
 }
 
-/*
- * Dynamic version of ProcessIdToSessionId() form Terminal Service.
- * It is only returning something else than 0 when running under
- * Terminal Service, available since NT4 SP4 and not for win9x
- */
-static guint
-get_session_id (void)
-{
-  typedef BOOL (WINAPI *t_ProcessIdToSessionId) (DWORD, DWORD*);
-  static t_ProcessIdToSessionId p_ProcessIdToSessionId = NULL;
-  static HMODULE kernel32 = NULL;
-  DWORD id = 0;
-
-  if (kernel32 == NULL)
-    {
-      kernel32 = GetModuleHandle ("kernel32.dll");
-
-      g_assert (kernel32 != NULL);
-
-      p_ProcessIdToSessionId = (t_ProcessIdToSessionId) GetProcAddress (kernel32, "ProcessIdToSessionId");
-   }
-  if (p_ProcessIdToSessionId)
-      p_ProcessIdToSessionId (GetCurrentProcessId (), &id); /* got it (or not ;) */
-
-  return id;
-}
-
 GdkDisplay *
 gdk_display_open (const gchar *display_name)
 {
@@ -265,6 +238,7 @@ gdk_display_get_name (GdkDisplay *display)
   HWINSTA hwinsta = GetProcessWindowStation ();
   char *window_station_name;
   DWORD n;
+  DWORD session_id;
   char *display_name;
   static const char *display_name_cache = NULL;
 
@@ -301,8 +275,12 @@ gdk_display_get_name (GdkDisplay *display)
        window_station_name = "WinSta0";
     }
 
-  display_name = g_strdup_printf ("%d\\%s\\%s",
-                                 get_session_id (), window_station_name,
+  if (!ProcessIdToSessionId (GetCurrentProcessId (), &session_id))
+    session_id = 0;
+
+  display_name = g_strdup_printf ("%ld\\%s\\%s",
+                                 session_id,
+                                 window_station_name,
                                  desktop_name);
 
   GDK_NOTE (MISC, g_print ("gdk_display_get_name: %s\n", display_name));